// 封装axios

// 导入axios
import axios from 'axios'

// 导入store
import store from '@/store/index.js'

// 创建axios的副本对象
const instance = axios.create({
  // baseURL: 'http://localhost:3000'
})

// 设置拦截器 可以在请求发送前和响应接收后添加逻辑代码
// 请求拦截
instance.interceptors.request.use(
  (config) => {
    // 设置统一的token
    const token = store.getters.token
    // 判断token是否存在
    if (token) { // token存在，添加到请求头中
      config.headers.Authorization = `Bearer ${token}`
    }
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)
// 响应拦截
instance.interceptors.response.use(
  (response) => {
    // response 服务器响应回来的所有数据
    // return response 将服务器响应的数据交给外界 axios().then()

    const { message, success } = response.data
    // 判断本次请求是否成功
    if (!success) {
      // 代码进到这里说明请求失败了
      return Promise.reject(new Error(message))
    }
    return response.data
  },
  (error) => {
    return Promise.reject(error)
  }
)

// 暴露axios副本对象
export default instance
